﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

  


  
  <title>FileMove</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


  
  <link href="../css/commands.css" rel="stylesheet" type="text/css">


  
  <link href="../css/print.css" rel="stylesheet" type="text/css" media="print">
</head>


<body>


<h1>FileMove</h1>



<p>移动或重命名一个或者多个文件。</p>


<p class="CommandSyntax">FileMove, SourcePattern,
DestPattern [, Flag]</p>


<h3>参数 </h3>


<table border="1" bordercolor="#c0c0c0" cellpadding="3" cellspacing="0" width="100%">


  <tbody>


    <tr>


      <td>SourcePattern</td>


      <td>单个文件的名称或一个通配符类型例如 C:\Temp\*.tmp 。如果未指定绝对路径，<em>SourcePattern
      </em>将假设在 <a href="../Variables.htm#WorkingDir">%A_WorkingDir%</a>
。</td>


    </tr>


    <tr>


      <td>DestPattern</td>


      <td>目标文件的名称或通配符类型，如果绝对路径未指定将假设在 <a href="../Variables.htm#WorkingDir">%A_WorkingDir%</a>
。要执行一个简单的移动 -- 保留已存在的文件名 --&nbsp;仅指定文件夹名称像那些功能相同的例子显示的那样：<br>


FileMove, C:\*.txt, C:\My Folder<br>


FileMove, C:\*.txt, C:\My Folder\*.*</td>


    </tr>


    <tr>


      <td width="15%">Flag</td>


      <td width="85%">
      
      <p>(可选参数) 此 flag(标识) 决定是否覆盖已存在的文件：</p>


      
      <p>0 = (默认) 不覆盖存在的文件<br>


1 = 覆盖存在的文件</p>


      
      <p>此参数可以是一个 <a href="../Variables.htm#Expressions">expression</a>(表
达式) 甚至是一个算得的 true(真) 或 false(假)&nbsp;(因为真或假在内部被存为 1 和 0&nbsp;)。</p>


      </td>


    </tr>


  
  </tbody>
</table>


<h3>ErrorLevel</h3>


<p><a href="../misc/ErrorLevel.htm">ErrorLevel</a>
被设为由于出错而不能被移动的文件数量，或相反是 0 。不过，如果源文件是单个文件(无通配符)并且文件不存在，ErrorLevel 将设为 0
。要侦测这种情况，在移动源文件前对它使用 <a href="IfExist.htm">IfExist</a>
或 <a href="../Functions.htm#FileExist">FileExist()</a>
。</p>


<p>与 <a href="FileCopy.htm">FileCopy</a>
不同的是，移动一个文件覆盖它自己总是视为成功的，即使覆盖模式没有启用。</p>


<h3>注意</h3>


<p> FileMove
仅移动文件。要代替它移动一个文件夹的内容(它的所有文件和子文件夹)，请看下面的示例部分。要移动或重命名单个文件夹，使用 <a href="FileMoveDir.htm">FileMoveDir</a> 。</p>


<p>即使错误发生，操作也将继续。</p>


<p>尽管此命令能够移动文件到一个不同的
volume(卷)，但此操作将比在同一个卷上移动花更长的时间。这是因为同一个卷移动类似于重命名，因此更加迅速。</p>


<h3>相关命令</h3>


<p><a href="FileCopy.htm">FileCopy</a>, <a href="FileCopyDir.htm">FileCopyDir</a>, <a href="FileMoveDir.htm">FileMoveDir</a>, <a href="FileDelete.htm">FileDelete</a></p>


<h3>示例</h3>


<pre class="NoIndent">FileMove, C:\My Documents\List1.txt, D:\Main Backup\ <em>; 不重命名地移动文件。</em><br>FileMove, C:\File Before.txt, C:\File After.txt <em>; 重命名单个文件。</em><br>FileMove, C:\Folder1\*.txt, D:\New Folder\*.bkp <em>; 移动并重命名文件为一个新的扩展名。</em></pre>


<p>&nbsp;</p>


<pre class="NoIndent"><em>; 下面的例子移动一个文件夹内的所有文件和文件夹到一个不同的文件夹：</em><br>ErrorCount := MoveFilesAndFolders("C:\My Folder\*.*", "D:\Folder to receive all files &amp; folders")<br>if ErrorCount &lt;&gt; 0<br>MsgBox %ErrorCount% 个文件/文件夹不能被移动。<br>MoveFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)<br><em>; 移动所有匹配</em><em> SourcePattern 的文件和文件夹到名为</em><em> DestinationFolder 的文件夹</em><em></em><br><em>; 并返回不能被移动的文件/文件夹的数量。此函数需要 v1.0.38+</em><br><em>; 因为它使用了 FileMoveDir 的模式 2 。</em><br>{<br>if DoOverwrite = 1<br>DoOverwrite = 2 <em>; 请看 <a href="FileMoveDir.htm">FileMoveDir</a> 关于模式 2 对模式 1 的描述。</em><br><em>; 首先移动所有文件(而不是文件夹):</em><br>FileMove, %SourcePattern%, %DestinationFolder%, %DoOverwrite%<br>ErrorCount := ErrorLevel<br><em>; 现在移动所有的文件夹:</em><br>Loop, %SourcePattern%, 2 <em>; 2 表示 "仅获取文件夹" 。</em><br>{<br>FileMoveDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%<br>ErrorCount += ErrorLevel<br>if ErrorLevel <em>; 报告每一个有问题的文件夹名称。</em><br>MsgBox 不能移动 %A_LoopFileFullPath% 到 %DestinationFolder% 。<br>}<br>return ErrorCount<br>}</pre>

</body>
</html>
